﻿checkInfoTime = 20000;    //信息显示时间


function $$(id) {
    if (typeof id == 'string') {
        return document.getElementById(id);
    } else {
        return id;
    }
}

/*
[功能] 检验字符串长度
[参数] str 要检验字符串
[作者] yhw 2007/11/18
*/
function codeLength(str) {
    len2 = 0;
    for (var ci = 0; ci < str.length; ci = ci + 1) {
        var code = str.charCodeAt(ci);
        if (code < 128)
            len1 = 1;
        else
            len1 = 2;
        len2 = len2 + len1;
    }
    return len2;
}

/*
[功能] 判断该变量是否存在，防止报错
[参数] obj要检查的变量名称
[作者] yhw 2003/8/6
*/
function isVarDefined(obj) {
    if (typeof (obj) == "undefined") {
        return false;
    } else {
        return true;
    }
}

/*
[功能] 截取字符串长度
[参数] str 要检验字符串
[作者] yhw 2007/11/18
*/
function subStr(len,str) {
    len2 = 0;
    var str1=""
    for (var ci = 0; ci < str.length; ci = ci + 1) {
        var code = str.charCodeAt(ci);
        if (code < 128)
            len1 = 1;
        else
            len1 = 2;
        len2 = len2 + len1;
        if (len2 <= len) {
            str1 = str1 + str.substring(ci, ci + 1);
        }
        else {
            str1 += "...";
            return str1;
        }
    }
    return str1;
}

/*
[功能] 检验输入是否数字

[参数] inputVal 检验内容

[作者] yhw 2007/11/18
*/
function isFloat(inputVal) {
    if (inputVal == "") return false;
    if (isNaN(inputVal)) return false;
    if (inputVal.indexOf(" ") != -1) return false;
    return true;
}

/*
[功能] 检验输入的内容是否整数
[参数] inputVal 检验内容

[作者] yhw 2007/11/18
*/
function isInteger(inputVal) {
    if (inputVal.indexOf(" ") != -1) return false;
    if ((inputVal.indexOf('.') != -1) || (isNaN(inputVal))) return false;
    return true;
}

/*
[功能] 检验日期的有效性

[参数] inputVal 检验内容

[作者] yhw 2007/11/18
*/
function validateDate(dateStr) {
    //检查日期有效性
    //日期格式：YYYY-MM-DD
    var monthDays = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
    var dateArr = dateStr.split("-");
    if (dateArr.length != 3) return false;
    var yyyy = dateArr[0];
    var mm = dateArr[1];
    var dd = dateArr[2];
    if (yyyy.length != 4) return false;
    if (yyyy < 1754) return false;
    if (!isInteger(yyyy) || !isInteger(mm) || !isInteger(dd)) return false;
    if (((yyyy % 4 == 0) && (yyyy % 100 != 0)) || (yyyy % 400 == 0)) monthDays[1] = 29;
    if (mm < 1 || mm > 12 || dd > monthDays[mm - 1] || dd < 1) return false;
    return true;
}

/*
[功能] 检验日期时间的有效性

[参数] inputVal 检验内容

[作者] yhw 2007/11/18
*/
function validateDateTime(dateStr) {
    //检查日期有效性
    //日期格式：YYYY-MM-DD
    var timeParts = dateStr.split(" ");

    if (!validateDate(timeParts[0])) return false;
    var timeArr = timeParts[1].split(":");

    var hh = timeArr[0];
    var mm = timeArr[1];
    var ss = timeArr[2];

    if (!isInteger(hh) || !isInteger(mm) || !isInteger(ss)) return false;

    if (hh < 0 || hh > 59 || mm < 0 || mm > 59 || ss < 0 || ss > 59) return false;
    return true;
}

/*
[功能] 检验日期的有效性

[参数] inputVal 检验内容

[作者] yhw 2007/11/18
*/
function validateMonth(dateStr) {
    //检查日期有效性
    //日期格式：YYYY-MM-DD
    var dateArr = dateStr.split(".");
    if (dateArr.length != 2) return false;
    var yyyy = dateArr[0];
    var mm = dateArr[1];
    if (yyyy.length != 4) return false;

    if (!isInteger(yyyy) || !isInteger(mm)) return false;
    if (mm < 1 || mm > 12) return false;
    return true;
}

function validateYear(str) {
    if (str.length != 4) return false;
    if (!isInteger(str)) return false;
    return true;
}

function validateMonth2(dateStr) {
    //检查日期有效性
    //日期格式：YYYY-MM-DD
    var dateArr = dateStr.split(".");
    if (dateArr.length != 2 && dateArr.length != 1) return false;
    if (dateArr.length == 2) {
        var yyyy = dateArr[0];
        var mm = dateArr[1];
        if (yyyy.length != 4) return false;

        if (!isInteger(yyyy) || !isInteger(mm)) return false;
        if (mm < 1 || mm > 12) return false;
        return true;
    }
    else {
        var yyyy = dateArr[0];
        if (yyyy.length != 4) return false;

        if (!isInteger(yyyy)) return false;
        return true;
    }
}

/*
[功能] 比较2个日期的大小
[参数] dateStr1开始日期，dateStr2 结束日期
[作者] yhw 2007/7/21
*/
function dateCompare(dateStr1, dateStr2) {
    var startDate = Date.parse(new Date(dateStr1.replace(/-/g, "/")));
    var endDate = Date.parse(new Date(dateStr2.replace(/-/g, "/")));

    if (startDate <= endDate)
        return true;
    else
        return false;
}


// 去掉字符串的头空格（左空格）
function LTrim(str) {
    var i;
    for (i = 0; i < str.length; i++) {
        if (str.charAt(i) != " ") break;
    }
    str = str.substring(i, str.length);
    return str;
}

// 去掉字符串的尾空格（右空格）
function RTrim(str) {
    var i;
    for (i = str.length - 1; i >= 0; i--) {
        if (str.charAt(i) != " ") break;
    }
    str = str.substring(0, i + 1);
    return str;
}

// 去掉字符串的头尾空格（左右空格）
function Trim(str) {
    return LTrim(RTrim(str));
}

function checkString(field, fieldName, lengths, flag) {
    if (!isVarDefined(field)) {
        return '类型未定义，可能网页没有完全载入或者程序错误。';
    }
    if ((flag != 0) && (Trim(field.value) == "")) {
        return "『" + fieldName + "』内容不能为空，请重新输入。";
    }
    if ((lengths > 0) && (codeLength(field.value) > lengths)) {
        return "『" + fieldName + "』的长度不能超过" + lengths.toString(10) + "字节，请重新输入。";
    }
    return "";
}

function checkYear(field, fieldName, flag) {
    if (!isVarDefined(field)) {
        return '类型未定义，可能网页没有完全载入或者程序错误。';
    }

    if ((flag != 0) && (field.value == "")) {
        return "『" + fieldName + "』内容不能为空，请重新输入。";
    }

    if (!validateYear(field.value)) {
        return "『" + fieldName + "』填写不合法,请重新输入。";
    }

    return "";
}

/*
[功能] 检验输入的字符串是否合法 (不能输入汉字)
[参数] field obj,fieldName 中文名称,lengths 长度,flag 是否必填
[作者] yhw 2007/11/18
*/
function checkString2(field, fieldName, lengths, flag) {
    if (!isVarDefined(field)) {
        return '类型未定义，可能网页没有完全载入或者程序错误。';
    }
    if ((flag != 0) && (field.value == "")) {
        return "『" + fieldName + "』内容不能为空，请重新输入。";
    }
    for (i = 0; i < field.value.length; i = i + 1) {
        var code = field.value.charCodeAt(i);
        if (code > 128) {
            return "『" + fieldName + "』填写了非法字符，不允许填写汉字。";
        }
    }
    if ((lengths > 0) && (codeLength(field.value) > lengths)) {
        return "『" + fieldName + "』的长度不能超过" + lengths.toString(10) + "字节，请重新输入。";
    }
    return "";
}

/*
[功能] 检验输入的字符串是否合法 (只能输入英文和数字)
[参数] field obj,fieldName 中文名称,lengths 长度,flag 是否必填
[作者] yhw 2007/11/18
*/
function checkString3(field, fieldName, lengths, flag) {
    if (!isVarDefined(field)) {
        return '类型未定义，可能网页没有完全载入或者程序错误。';
    }
    if ((flag != 0) && (field.value == "")) {
        return "『" + fieldName + "』内容不能为空，请重新输入。";
    }
    if (/[^a-z0-9A-Z]/.test(field.value)) {
        return "『" + fieldName + "』填写了非法字符，只允许输入a-z,A-Z,0-9字符。";
    }

    if ((lengths > 0) && (codeLength(field.value) > lengths)) {
        return "『" + fieldName + "』的长度不能超过" + lengths.toString(10) + "字节，请重新输入。";
    }
    return true;
}

/*
[功能] 判断输入数字是否合法(整数)
[参数] field obj,fieldName 中文名称,flag 是否必填
[作者] yhw 2007/11/18
*/
function checkInteger(field, fieldName, flag) {
    if (!isVarDefined(field)) {
        return '类型未定义，可能网页没有完全载入或者程序错误。';
    }
    if (!isInteger(field.value)) {
        return "『" + fieldName + "』填写了非法字符，只能填写整数。";
    }
    if ((flag == 1) && (field.value == '')) {
        return "『" + fieldName + "』的内容不能为空。";
    }
    if (field.value > 100000000 || field.value < 0) {
        return "『" + fieldName + "』填写的整数值超过了可处理范围。";
    }
    return "";
}


/*
[功能] 判断输入数字是否合法(小数)
[参数] field obj,fieldName 中文名称,flag 是否必填
[作者] yhw 2007/11/18
*/
function checkFloat(field, fieldName, flag) {
    if (!isVarDefined(field)) {
        return '类型未定义，可能网页没有完全载入或者程序错误。';
    }
    if (!isFloat(field.value) && (field.value != '')) {
        return "『" + fieldName + "』填写了非法字符，只能填写数字。";
    }
    if ((flag == 1) && (field.value == '')) {
        return "『" + fieldName + "』的内容不能为空。";
    }
    if (field.value > 10000000000 || field.value < -10000000000) {
        return "『" + fieldName + "』填写的数值超过了可处理范围。";
    }
    return "";
}


/*
[功能] 判断输入日期是否合法
[参数] field obj,fieldName 中文名称,flag 是否必填
[作者] yhw 2007/11/18
*/
function checkDate(field, fieldName, flag) {
    if (!isVarDefined(field)) {
        return '类型未定义，可能网页没有完全载入或者程序错误。';
    }

    if ((flag == 1) && (field.value == '')) {
       return "『" + fieldName + "』的内容不能为空。";
    }
    if (field.value != "") {
        if (!validateDate(field.value)) {
            return "『" + fieldName + "』日期格式错误，正确格式“yyyy-mm-dd”。";
        }
    }

    return "";
}

function validateDateTimes(datefiled) {
    var dateArr1 = datefiled.split("-");
    if (dateArr1.length < 0) return false;

}

function checkDateTime(field, fieldName, flag) {
    if (!isVarDefined(field)) {
        return '类型未定义，可能网页没有完全载入或者程序错误。';
    }

    if ((flag == 1) && (field.value == '')) {
        return "『" + fieldName + "』的内容不能为空。";
    }
    if (field.value != "") {
        if (validateDateTimes(field.value)) {
            return "『" + fieldName + "』日期格式错误，正确格式“2006-01-01”。";
        }
    }

    return "";
}

/*
[功能] 判断输入日期是否合法
[参数] field obj,fieldName 中文名称,flag 是否必填
[作者] yhw 2007/11/18
*/
function checkMonth(field, fieldName, flag) {
    if (!isVarDefined(field)) {
        return '类型未定义，可能网页没有完全载入或者程序错误。';
    }

    if ((flag == 1) && (field.value == '')) {
        return "『" + fieldName + "』的内容不能为空。";
    }
    if (field.value != "") {
        if (!validateMonth(field.value)) {
            return "『" + fieldName + "』日期格式错误，正确格式(例如）“2003.03”。";
        }
    }

    return "";
}

function checkMonth2(field, fieldName, flag) {
    if (!isVarDefined(field)) {
        return '类型未定义，可能网页没有完全载入或者程序错误。';
    }

    if ((flag == 1) && (field.value == '')) {
        return "『" + fieldName + "』的内容不能为空。";
    }
    if (field.value != "") {
        if (!validateMonth2(field.value)) {
            return "『" + fieldName + "』日期格式错误，正确格式“yyyy.mm”或者“yyyy”。";
        }
    }

    return "";
}

/*
[功能] 判断输入日期是否合法
[参数] field obj,fieldName 中文名称,flag 是否必填
[作者] yhw 2007/11/18
*/
function Em(str) { return (/^([\.\w-]){3,}@([\w-]){3,}(\.([\w]){2,4}){1,2}$/.test(str)) }

function checkEmail(field, fieldName, flag) {
    if (!isVarDefined(field)) {
        return '类型未定义，可能网页没有完全载入或者程序错误。';
    }
    if (field.value != "") {
        if (!Em(field.value)) {
            return "『" + fieldName + "』Email格式错误，正确格式“xxxx@yyyy.zzz”。";
        }
    }
    if ((flag == 1) && (field.value == '')) {
        return "『" + fieldName + "』的内容不能为空。";
    }
    return "";
}

function trim(str) {
    return str.replace(/^\s*|\s*$/g, "");
}

function CheckDateTime(str) {
    var reg = /^(\d+)-(\d{1,2})-(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;
    var r = str.match(reg);
    if (r == null) return false;
    r[2] = r[2] - 1;
    var d = new Date(r[1], r[2], r[3], r[4], r[5], r[6]);
    if (d.getFullYear() != r[1]) return false;
    if (d.getMonth() != r[2]) return false;
    if (d.getDate() != r[3]) return false;
    if (d.getHours() != r[4]) return false;
    if (d.getMinutes() != r[5]) return false;
    if (d.getSeconds() != r[6]) return false;
    if (str.length != 19) return false;
    return true;

}

//判断变量V是否为空值
function IsEmpty(v) {
    switch (typeof v) {
        case 'undefined': return true;
        case 'string': if (trim(v).length == 0) return true; break;
        case 'boolean': if (!v) return true; break;
        case 'number': if (0 === v) return true; break;
        case 'object':
            if (null === v) return true;
            if (undefined !== v.length && v.length == 0) return true;
            for (var k in v) { return false; } return true;
            break;
    }
    return false;
}